home *** CD-ROM | disk | FTP | other *** search
/ Chip 2003 July / CMCD0703.ISO / Software / Test / audioedit / setup_aed.exe / %MAINDIR% / Help / AudioEdit Deluxe.chm / html / blazesrv.js < prev    next >
Encoding:
Text File  |  2003-06-03  |  42.9 KB  |  1,104 lines

  1. var myArray = new Array;
  2.  
  3. function setUp() {
  4. myArray[myArray.length] = new Array ("GLOSS_BLAZE_amplify_1" , "<p><b>Amplify</b></p><p>Increases or decreases the volume.</p>");
  5. }
  6.  
  7.  
  8.  
  9. //--Filename: PBSHelp.js 
  10. //--Version 1
  11. //--Created April 26, 1999 based on Microsoft shared.js, RTL
  12. //--PBSHELP.js based on shared.js in NTShared.chm
  13. //--Version post beta 3 (7)
  14. //--version 05.24.99
  15. //--Modified popup functions from Helpmaster.js and added to pbshelp.js, RTL--4-26-99, 
  16. //--made revisions to reflect modular Help file system, RTL, 8-13-99
  17. //--revisions marked inline with code, search for word "Change:", RTL, 8-17-99
  18. //--changed .GIF to .PNG, RTL, 04-04-01
  19.  
  20. // Based on filename: shared.js in NTShared.chm
  21. // Version post beta 3 (7)
  22. // version 05.24.99
  23.  
  24. //************************************************ EVENT HANDLING ********************************************
  25. //*******************************************************************************************************************
  26. //  re-directs to the proper event-driven functions.
  27.  
  28. window.onload= loadPage;
  29. document.onclick= onclickTriage;
  30. document.onmouseover= gettingHot;
  31. document.onmouseout= gettingCold;
  32. window.onunload=saveChecklistState;
  33. window.onresize= resizeDiv;
  34.  
  35. window.onbeforeprint= set_to_print;
  36. window.onafterprint= reset_form;
  37. //********************************************  USER-DEFINED GLOBAL VARIABLES  ************************************
  38. //********************************************************************************************************************
  39. //  The images listed below can all be changed by the user.
  40.  
  41. var sPreviousTip= "Previous topic";
  42. var sNextTip= "Next topic";
  43. var sExpandTip= "Expand/collapse";
  44. var sPopupTip= "View definition";
  45. var sShortcutTip= "";
  46.  
  47. var moniker= "";                                         // moniker= ""; for flat files
  48. var sSharedCHM= moniker+"";//change: .chm name, RTL
  49.  
  50. var closed = sSharedCHM + "plusCold.PNG";                //image used for collapsed item in callExpand()
  51. var closedHot = sSharedCHM + "plusHot.PNG";            //hot image used for collapsed item in callExpand()
  52. var expand = sSharedCHM + "minusCold.PNG";            //image used for expanded item in callExpand()
  53. var expandHot = sSharedCHM + "minusHot.PNG";        //hot image used for expanded item in callExpand()
  54.  
  55. var previousCold= sSharedCHM + "previousCold.PNG";
  56. var previousHot= sSharedCHM + "previousHot.PNG"; 
  57. var nextCold= sSharedCHM + "nextCold.PNG";
  58. var nextHot= sSharedCHM + "nextHot.PNG"; 
  59.  
  60. var shortcutCold= sSharedCHM + "shortcutCold.PNG";
  61. var shortcutHot= sSharedCHM + "shortcutHot.PNG";
  62.  
  63. var popupCold= sSharedCHM + "popupCold.PNG";
  64. var popupHot= sSharedCHM + "popupHot.PNG";
  65.  
  66. var emptyImg= sSharedCHM + "empty.PNG";        //image used for empty expand
  67. var noteImg= sSharedCHM + "note.PNG";            //image used for notes
  68. var tipImg= sSharedCHM + "tip.PNG";            //image used for tips
  69. var warningImg= sSharedCHM + "warning.PNG";        //image used for warnings
  70. var cautionImg= sSharedCHM + "caution.PNG";        //image used for cautions
  71. var importantImg= sSharedCHM + "important.PNG";        //image used for important notice
  72. var relTopicsImg= sSharedCHM + "rel_top.PNG";        //image used for important notice
  73.  
  74. var branchImg= sSharedCHM + "elle.PNG";
  75. var branchImg_RTL= sSharedCHM + "elle_rtl.PNG";
  76.  
  77.  
  78. //********************************************  GLOBAL VARIABLES  ******************************************
  79. //********************************************************************************************************
  80.  
  81. var printing = "FALSE";
  82. var single = "FALSE";
  83. var isRTL= (document.dir=="rtl");
  84. var imgStyleRTL= ""; 
  85.       if (isRTL) imgStyleRTL=" style='filter:flipH' ";
  86.  
  87. var sActX_TDC= "CLASSID='CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83'";        //Tabular Data Control  for  reusable text data
  88. var sSharedReusableTextFile= sSharedCHM + "PBSHelpshared.txt";//change:txt file name, RTL, 8-22-99                                    // common reusable text file
  89. var sSharedReusableTextFileRecord= "para";                                                        //reusable text record
  90.  
  91. var numbers= /\d/g;                //javascript regular expression
  92. var spaces= /\s/g;                //javascript regular expression
  93. var semicolon= /;/g;            //javascript regular expression
  94.  
  95. var isIE5= (navigator.appVersion.indexOf("MSIE 5")>0) || (navigator.appVersion.indexOf("MSIE")>0 && parseInt(navigator.appVersion)> 4);
  96. var isPersistent= false;
  97.  
  98.  
  99. //********************************************  INITIALIZATION  *************************************************
  100. //******************************************************************************************************************
  101.  
  102. //*** loadPage **********************************************************************************************
  103. //  Adds the default image tags and re-usable text to the HTML page.
  104.  
  105. function loadPage(){
  106. isPersistent= (document.all.item("checklist")!=null) && (isIE5);
  107.  
  108.   setPreviousNext();
  109.   resizeDiv();
  110.   if (isPersistent) getChecklistState();
  111.   addReusableText();
  112.   insertImages();
  113. }
  114.  
  115. //****** setPreviousNext  ************************************************************************ ********************************************************************************************* 
  116. // insert previous/next navbar
  117. // called by: <div id="nav">@@HTMLsequenceFile.txt or .lst@@</div>
  118.  
  119. function setPreviousNext(){
  120.  
  121.  
  122.   var oNav = document.all.item("nav");
  123.         if (oNav == null ) return;
  124.   
  125.   var sPreviousALT= sPreviousTip;
  126.   var sNextALT= sNextTip;
  127.   var sHTMLfile= oNav.innerHTML;
  128.  
  129.   var imgPrev= "<IMG SRC='"+previousCold+"' BORDER=0 ALT='"+ sPreviousALT +"' ALIGN='top' "+ imgStyleRTL +">";
  130.   var imgNext= "<IMG SRC='"+nextCold+"' BORDER=0 ALT='"+ sNextALT  + "' ALIGN='top' "+ imgStyleRTL +">";
  131.   
  132.   var previousNextObject= "<OBJECT ID='HTMlist' WIDTH=100 HEIGHT=51 " + sActX_TDC +"><param name='DataURL' value='"
  133.         +sHTMLfile +"'><param name='UseHeader' value=True></OBJECT>";
  134.       
  135.         oNav.innerHTML= "<TABLE WIDTH='100%' STYLE='margin-top:0;' cellspacing=0>"
  136.         + "<TR><TD style='text-align=left; background-color:transparent'><A ID='previousLink' HREF='#' REL='previous' CLASS='navbar'>"
  137.         +imgPrev + "</A></TD><TD width='100%' align='center'></td><TD style='text-align=right; background-color:transparent'><A ID='nextLink' HREF='#' REL='next' CLASS='navbar'>"
  138.         +imgNext+ "</A></TD></TR></TABLE>";
  139.                     
  140.       document.body.innerHTML= document.body.innerHTML +  previousNextObject;
  141.       findPageSeq();
  142.       if (printing == "TRUE") return;
  143.       var  thisLoc= document.location.href +"#";
  144.  
  145.       if (previousLink.href== thisLoc) previousLink.style.display="none";
  146.       else  previousLink.style.display="block";
  147.  
  148.       if (nextLink.href== thisLoc) nextLink.style.display="none";
  149.       else  nextLink.style.display="block";
  150.       
  151. }
  152.  
  153. //****** findPageSeq *********************************************************************************************
  154. // finds this page in the "html sequence list" file (filename.lst) and determines the previous & next pages from the list
  155. // the list is created from a tool named "chumper"
  156.  
  157. function findPageSeq() {
  158.  
  159. var rs= HTMlist.recordset;
  160. var thisLoc= document.location.href;
  161. var iLoc= thisLoc.lastIndexOf("/");
  162.  
  163.     if (iLoc > 0) thisLoc= thisLoc.substring(iLoc+1, thisLoc.length);
  164.     
  165.     
  166.     if (nav.style == "[object]") {
  167.                 nav.style.visibility="hidden";
  168.                 printing = "FALSE";
  169.                 }
  170.         else
  171.             {
  172.                 printing = "TRUE";
  173.                 return;
  174.             }
  175.     
  176.        
  177.     rs.moveFirst();
  178.        
  179.     while (!rs.EOF) {
  180.           if (thisLoc == rs.fields("HTMfiles").value){
  181.               nav.style.visibility="visible"; 
  182.                 rs.MoveNext();
  183.               break;
  184.           }
  185.           previousLink.href=rs.fields("HTMfiles").value;      
  186.           rs.moveNext();
  187.      }
  188.                 
  189.       if (!rs.EOF) nextLink.href=rs.fields("HTMfiles").value;
  190. }
  191.  
  192.  
  193. //******Re-usable text ********************************************************************************************* 
  194. // Inserts the Tabular Data Control (TDC) object at the end of the page 
  195. // Inserts "re-usable text" from the txt file at: <span id="@@CHM_name@@@@index#@@" class="reuse"></span>
  196. // e.g.<span id="printing4" class="reuse"></span> for record#4 in the printing.txt in printing.chm.
  197.  
  198. function addReusableText(){
  199.  
  200. var ntsharedAdded= false;                    // make sure the object is only added once
  201. var CHMspecificAdded= false;                // make sure the object is only added once
  202. var coll = document.all.tags("SPAN");
  203. var sIndex,sRecord,sFile,sFileID,dataBindingObject;
  204.  
  205. // TDC object for ntshared.chm
  206. var coreObject= "WIDTH=100 HEIGHT=51 "+sActX_TDC+"><param name='UseHeader' value=True><param name='FieldDelim' value='~'><param name='sort' value='INDEX'>";
  207. var shareTextObject = "<OBJECT ID='NTsharedText' " + coreObject + "<param name='DataURL' value='"+sSharedReusableTextFile+"'></OBJECT>";
  208.  
  209.     for (var i=0; i< coll.length; i++)                                   
  210.          if (coll[i].className.toLowerCase()=="reuse"){
  211.              if (isRTL) coll[i].dir= "rtl";
  212.              
  213.              if (coll[i].id == null) return;
  214.              
  215.                 sFile= coll[i].id.toLowerCase();
  216.              sFile= sFile.replace(spaces,"");
  217.              sFileID= sFile;
  218.              sFile= sFile.replace(numbers,""); 
  219.  
  220.              if (sFile == sSharedReusableTextFileRecord) coll[i].dataSrc= "#NTsharedText";
  221.              else coll[i].dataSrc= "#CHMspecificText";
  222.     
  223.              coll[i].dataField= "INDEX";
  224.       
  225.              if (!ntsharedAdded && sFile==sSharedReusableTextFileRecord){
  226.                  document.body.innerHTML= document.body.innerHTML + shareTextObject;
  227.                  ntsharedAdded= true;
  228.              }
  229.  
  230.              else if (!CHMspecificAdded && sFile !=sSharedReusableTextFileRecord){
  231.                       dataBindingObject= "<OBJECT ID='CHMspecificText'" + coreObject
  232.                       + "<param name='DataURL' value='"+sSharedCHM+sFile+".txt'></OBJECT>";
  233.                       document.body.innerHTML= document.body.innerHTML + dataBindingObject; 
  234.                       CHMspecificAdded= true;
  235.              }
  236.                     
  237.              if (sFile == sSharedReusableTextFileRecord)
  238.                  sRecord= NTsharedText.recordset;
  239.              else sRecord= CHMspecificText.recordset; 
  240.                                                     
  241.              sRecord.moveFirst(); 
  242.     
  243.               do { sIndex= sRecord.fields("INDEX").value;
  244.                      sText= sRecord.fields("TEXT").value;
  245.                      
  246.                      if (sIndex < sFileID) sRecord.moveNext();
  247.                      else break;
  248.               } while (!sRecord.EOF);
  249.                   
  250.                if (sIndex == sFileID) coll[i].innerHTML= sText;
  251.     }           
  252. }
  253.  
  254.  //****** insertImages ********************************************************************************************* 
  255.  //  Inserts shared images in User-Defined Variables section and thumbnails.
  256.  
  257. function insertImages(){
  258.  
  259. // insert alert icons
  260.   var collP = document.all.tags("P");
  261.   for (var i=0; i<collP.length; i++) {
  262.        if (collP[i].className.toLowerCase()=="note")            collP[i].innerHTML ="<img class='alert' src='"+noteImg+"' "+ imgStyleRTL +"> " +     collP[i].innerHTML;
  263.        else if (collP[i].className.toLowerCase()=="warning")    collP[i].innerHTML ="<img class='alert' src='"+warningImg+"'> " +  collP[i].innerHTML;
  264.        else if (collP[i].className.toLowerCase()=="caution")    collP[i].innerHTML ="<img class='alert' src='"+cautionImg+"'> " +  collP[i].innerHTML;
  265.        else if (collP[i].className.toLowerCase()=="tip")        collP[i].innerHTML ="<img class='alert' src='"+tipImg+"'> " +      collP[i].innerHTML;
  266.        else if (collP[i].className.toLowerCase()=="important")  collP[i].innerHTML ="<img class='alert' src='"+importantImg+"'> " + collP[i].innerHTML;
  267.        else if (collP[i].className.toLowerCase()=="empty")      collP[i].innerHTML ="<img class='alert' src='"+emptyImg+"'> " +    collP[i].innerHTML;
  268.        else if (collP[i].className.toLowerCase()=="reltopics")  collP[i].innerHTML ="<img class='alert' src='"+relTopicsImg+"'> " + collP[i].innerHTML;
  269.   }
  270.   
  271. //indents for Navigation Tree 
  272. var collUL = document.all.tags("UL");
  273.  
  274. for (var i=0; i<collUL.length; i++) {
  275.        var indent= 0;
  276.        if (collUL[i].className.toLowerCase()=="navtree"){
  277.            if (isRTL) collUL[i].style.listStyleImage= "url('" + branchImg_RTL + "')";
  278.            else collUL[i].style.listStyleImage= "url('" + branchImg + "')";
  279.              for (var j = 0; j < collUL[i].children.length; j++)
  280.                 if (collUL[i].children[j].className.toLowerCase()=="branch"){
  281.                     if (isRTL) collUL[i].children[j].style.marginRight= (indent +'em');
  282.                     else   collUL[i].children[j].style.marginLeft= (indent +'em');
  283.                     indent= indent + 0.75;
  284.                 }
  285.       }
  286. }
  287.    
  288.   for (var i=0; i < document.anchors.length; i++){
  289.          var imgInsert="";  
  290.          var imgStyle= "";
  291.          var imgSpace= "<span class='space'></span>";      
  292.          var oBefore=document.anchors[i].parentElement.tagName;
  293.          var oAnchor= document.anchors[i].id.toLowerCase();
  294.          
  295. // insert RELTOPICS icons
  296. //       if (oAnchor=="reltopics")          
  297. //            if (document.anchors[i].children.tags("IMG")(0) && document.anchors[i].children.tags("IMG")(0).className.toLowerCase() == "reltopics")
  298. //                    imgInsert= "";    // not to re-insert when persistent
  299. //            else  imgInsert= "<img class='alert' src='"+relTopicsImg+"'>" + imgSpace;
  300.             
  301. // insert SHORTCUT icons
  302.        if (oAnchor=="shortcut") {    
  303.             document.anchors[i].title= sShortcutTip;     
  304.             if (document.anchors[i].children.tags("IMG")(0) && document.anchors[i].children.tags("IMG")(0).className.toLowerCase() == "shortcut")
  305.                     imgInsert= "";    // not to re-insert when persistent
  306.             else  imgInsert= "<img class='shortcut' src='"+shortcutCold+"' "+ imgStyleRTL+ ">" + imgSpace;
  307.         }    
  308.                       
  309. // insert POPUP icons
  310.        else if (oAnchor=="wpopup" || oAnchor=="wpopupweb") document.anchors[i].title= sPopupTip;
  311.        else if (document.anchors[i].className.toLowerCase()=="popupicon")
  312.             if (document.anchors[i].children.tags("IMG")(0) && document.anchors[i].children.tags("IMG")(0).className.toLowerCase() == "popup")
  313.                    imgInsert= "";    // not to re-insert when persistent
  314.             else imgInsert= "<img class='popup' src='"+popupCold+"'>" + imgSpace;
  315.  
  316. // insert EXPAND icons 
  317.        else if (oAnchor=="expand") {
  318.               document.anchors[i].title= sExpandTip;
  319.               if (document.anchors[i].children.tags("IMG")(0) && document.anchors[i].children.tags("IMG")(0).className.toLowerCase() == "expand")
  320.                   imgInsert= "";     // not to re-insert when persistent      
  321.               else{ 
  322.                   if (document.anchors[i].parentElement.offsetLeft == document.anchors[i].offsetLeft) {
  323.                       imgSpace= "<span class='space' style='width:0'></span>";     
  324.                       if (isRTL){ document.anchors[i].parentElement.style.marginRight= "1.5em";  imgStyle=" style=margin-right:'-1.5em'";}
  325.                       else { document.anchors[i].parentElement.style.marginLeft= "1.5em";  imgStyle=" style=margin-left:'-1.5em'";}
  326.                   }      
  327.                   imgInsert= "<img class='expand' src='"+ closed +"' "+imgStyle+">" +imgSpace;
  328.               }
  329.        }
  330.  
  331. // insert thumbnail images       
  332.        else if (oAnchor=="thumbnail"  || oAnchor=="thumbnailweb"){ 
  333.             var sAltText = document.anchors[i].innerHTML; 
  334.             var sThumbnailText = document.anchors[i].title; 
  335.             var oImg = document.anchors[i].href.toLowerCase();
  336.                   if (oAnchor=="thumbnail") 
  337.                          var sThumbnailImg= moniker + getURL(oImg);
  338.                   else var sThumbnailImg = document.anchors[i].href.toLowerCase();
  339.                 document.anchors[i].outerHTML = "<DIV id='thumbDiv' class='thumbnail'>"+document.anchors[i].outerHTML+"</div>";
  340.                 document.anchors[i].innerHTML = "<img class='thumbnail' src='" + sThumbnailImg + "' alt= ' " + sAltText + "'><p>" +sThumbnailText+"</p>";
  341.                 
  342.                   if (isRTL) thumbDiv.style.styleFloat= "right";
  343.        }
  344.             
  345.         document.anchors[i].innerHTML = imgInsert + document.anchors[i].innerHTML;
  346.        if (isRTL) document.anchors[i].dir="rtl";
  347.    }
  348. }
  349.  
  350.  
  351. //***** onclickTriage ****************************************************************************************
  352. // redirects to the appropriate function based on the ID of the clicked <A> tag.
  353.  
  354. function onclickTriage(){
  355. var e= window.event.srcElement;
  356.  
  357. //  if the innerHTML in the <a> tag is encapsulated by a style tag or hightlighted in the word seach,
  358. //  the parentElement is called.
  359.  
  360.     for (var i=0; i < 5; i++)
  361.            if (e.tagName!="A" && e.parentElement!=null) e= e.parentElement;
  362.     eID= e.id.toLowerCase();
  363.                 
  364.     if (popupOpen) closePopup();
  365.     
  366.  // expand image in a new window
  367.     if (eID=="thumbnail" || eID=="pophtm") popNewWindow(e);
  368.     else if (eID=="thumbnailweb") callThumbnailWeb(e);
  369.     else if (eID=="wpopup")    callPopup(e);
  370.     else if (eID=="wpopupweb") callPopupWeb(e);
  371.     else if (eID=="shortcut")  callShortcut(e);
  372.     else if (eID=="reltopics") callRelatedTopics(e);
  373.     else if (eID=="altloc")    callAltLocation(e);
  374.     else if (eID=="expand")    callExpand(e);
  375.     return;
  376. }
  377.  
  378.  
  379. //*** gettingHot ****************************************************************************************
  380. // Makes all the required changes for mouseover.
  381.  
  382. function gettingHot() {
  383. var e = window.event.srcElement;
  384.  
  385.   if (e.id.toLowerCase()=="cold")  e.id ="hot";
  386.   else if (e.src== previousCold)  e.src = previousHot;
  387.   else if (e.className.toLowerCase()=="navbar" && e.children.tags("IMG")(0).src== previousCold)  e.children.tags("IMG")(0).src= previousHot;
  388.   else if (e.src== nextCold)  e.src = nextHot;
  389.   else if (e.className.toLowerCase()=="navbar" && e.children.tags("IMG")(0).src== nextCold)  e.children.tags("IMG")(0).src= nextHot;
  390.   
  391.   else if (e.className.toLowerCase()=="shortcut" && e.tagName=="IMG")  e.src = shortcutHot;            //<img> tags have a class
  392.   else if (e.id.toLowerCase()=="shortcut")  e.children.tags("IMG")(0).src = shortcutHot;            //<a> tags have an ID
  393.   
  394.   else if (e.className.toLowerCase()=="popup" && e.tagName=="IMG")  e.src = popupHot;            //<img> tags have a class
  395.   else if (e.className.toLowerCase()=="popupicon")  e.children.tags("IMG")(0).src = popupHot;            //<a> tags have an ID
  396.   
  397.   else if ((e.className.toLowerCase()=="expand" && e.tagName=="IMG") ||( e.id.toLowerCase()=="expand")) expandGoesHot(e);
  398. }
  399.  
  400. //*** gettingCold **************************************************************************************
  401. // Initial state for mouseout.
  402.  
  403. function gettingCold() {
  404. var e = window.event.srcElement;
  405.  
  406.   if (e.id.toLowerCase()=="hot")  e.id ="cold";
  407.   else if (e.src== previousHot)  e.src = previousCold;
  408.   else if (e.className.toLowerCase()=="navbar" && e.children.tags("IMG")(0).src== previousHot)  e.children.tags("IMG")(0).src= previousCold;
  409.   else if (e.src== nextHot)  e.src = nextCold;
  410.   else if (e.className.toLowerCase()=="navbar" && e.children.tags("IMG")(0).src== nextHot)  e.children.tags("IMG")(0).src= nextCold;
  411.   
  412.   else if (e.className.toLowerCase()=="shortcut" && e.tagName=="IMG")   e.src = shortcutCold;        //<img> tags have a class
  413.   else if (e.id.toLowerCase()=="shortcut")  e.children.tags("IMG")(0).src= shortcutCold;             //<a> tags have an ID
  414.   
  415.   else if (e.className.toLowerCase()=="popup" && e.tagName=="IMG")   e.src = popupCold;        //<img> tags have a class
  416.   else if (e.className.toLowerCase()=="popupicon")  e.children.tags("IMG")(0).src= popupCold;             //<a> tags have an ID
  417.   
  418.   else if ((e.className.toLowerCase()=="expand" && e.tagName=="IMG") ||( e.id.toLowerCase()=="expand")) expandGoesCold(e);
  419. }
  420.  
  421. //****************************************** OBJECT CONSTRUCTION **************************************
  422. //*****************************************************************************************************
  423. //  Uses an A tag to pass parameters between an HTML page and this script.
  424. //  Creates an ActiveX Object from these parameters, appends the Object to the end of the page,
  425. //  and clicks it. These objects relate to HTMLHelp environment and information about them can be found on the http://HTMLHelp site.
  426.  
  427. //  Object construction variables *********************************************************************
  428.  
  429. var sParamCHM,sParamFILE, sParamEXEC, sParamMETA,iEND;
  430. var sActX_HH= " type='application/x-oleobject' classid='clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11' ";
  431.  
  432.  
  433. //*** callPopup ***************************************************************************************
  434. // creates an object from an <A> tag HREF, the object inserts a winhelp popup
  435. // called by: <A ID="wPopup" HREF="HELP=@@file_name.hlp@@ TOPIC=@@topic#@@">@@Popup text@@</A>
  436.  
  437. function callPopup(eventSrc) {
  438. var e= eventSrc;
  439. var eH= unescape(e.href);
  440. var eH_= eH.toLowerCase();
  441.        event.returnValue = false;
  442.                                                                
  443.   var iTOPIC      = eH_.lastIndexOf("topic=");
  444.         if (iTOPIC==-1) return;
  445.         sParamTOPIC = eH.substring((iTOPIC+6),eH.length);          // extracts the topic for item2
  446.         
  447.   var iHELP       = eH_.lastIndexOf("help=");
  448.         if (iHELP==-1) return;
  449.         sParamHELP = eH.substring(iHELP+5,iTOPIC);            // extracts the help file for item1
  450.         
  451.         if (document.hhPopup) document.hhPopup.outerHTML = "";    // if hhPopup object exists, clears it
  452.  
  453.  
  454.  var  h= "<object id='hhPopup'"+ sActX_HH + "STYLE='display:none'><param name='Command' value='WinHelp, Popup'>";
  455.       h= h + "<param name='Item1' value='" + sParamHELP + "'><param name='Item2' value='" + sParamTOPIC + "'></object>";
  456.         
  457.         document.body.insertAdjacentHTML("beforeEnd", h);     
  458.         document.hhPopup.hhclick();
  459. }
  460.  
  461.  
  462. //*** callAltLocation******************************************************************************
  463. // creates an object from an <A> tag HREF, the object will navigate to the alternate location if the first location is not found.
  464. // called from: <A ID="altLoc" HREF="CHM=@@1st_chm_name.chm;Alt_chm_name.chm@@  FILE=@@1st_file_name.htm;Alt_file_name.htm@@">@@Link text here@@</A>
  465.    
  466.  
  467. function callAltLocation(eventSrc) {
  468. var e= eventSrc;
  469. var eH= unescape(e.href);
  470. var eH_= eH.toLowerCase();
  471. var sFILEarray,sCHMarray;
  472.      event.returnValue = false;
  473.      
  474.   var sParamTXT= e.innerHTML;
  475.       sParamTXT= sParamTXT.replace(semicolon,"");
  476.                                        
  477.   var iFILE = eH_.lastIndexOf("file=");
  478.         if (iFILE==-1) return;
  479.         sParamFILE= eH.substring((iFILE+5),eH.length);                  // extracts the 2 HTM files
  480.         sParamFILE= sParamFILE.replace(spaces,"");
  481.         iSPLIT= sParamFILE.match(semicolon);
  482.         if (iSPLIT)
  483.               sFILEarray = sParamFILE.split(";");                                        // separates the 2 HTM files
  484.         else return;
  485.           
  486.   var iCHM  = eH_.lastIndexOf("chm=");
  487.         if(iCHM==-1) return;
  488.         else         sParamCHM = eH.substring(iCHM+4,iFILE);            // extracts the 2 CHM's
  489.         sParamCHM= sParamCHM.replace(spaces,"");
  490.         iSPLIT= sParamCHM.match(semicolon);
  491.         if (iSPLIT)
  492.             sCHMarray= sParamCHM.split(";");                                    // separates the 2 CHM's
  493.         else return;
  494.         
  495.         sParamFILE= moniker + sCHMarray[0]+ "::/" + sFILEarray[0] + ";" + moniker + sCHMarray[1]+ "::/" + sFILEarray[1];
  496.                 
  497.         if (document.hhAlt) document.hhAlt.outerHTML = "";                // if hhAlt object exists, clears it
  498.  
  499.  
  500.   var h= "<object id='hhAlt'"+ sActX_HH + "STYLE='display:none'><PARAM NAME='Command' VALUE='Related Topics'>";
  501.       h= h + "<param name='Item1' value='" + sParamTXT +";" + sParamFILE + "'></object>";
  502.     
  503.         document.body.insertAdjacentHTML("beforeEnd", h); 
  504.         document.hhAlt.hhclick();
  505. }
  506.  
  507.  
  508. //*** callRelatedTopics******************************************************************************
  509. // creates an object from an <A> tag HREF, the object inserts a popup of the related topics to select
  510. // called from: <A ID="relTopics" HREF="CHM=@@chm_name1.chm;chm_name2.chm@@ META=@@a_filename1;a_filename2@@">Related Topics</A>
  511.    
  512.  
  513. function callRelatedTopics(eventSrc) {
  514. var e= eventSrc;
  515. var eH= unescape(e.href);
  516. var eH_= eH.toLowerCase();
  517.      event.returnValue = false;
  518.                                        
  519.   var iMETA = eH_.lastIndexOf("meta=");
  520.         if (iMETA==-1) return;
  521.         sParamMETA = eH.substring((iMETA+5),eH.length);              // extracts the META keywords for item2
  522.         
  523.   var iCHM  = eH_.lastIndexOf("chm=");
  524.         if(iCHM==-1) sParamCHM = "";
  525.         else         sParamCHM = eH.substring(iCHM+4,iMETA);            // extracts the CHM files for item1
  526.     
  527.         if (document.hhRel) document.hhRel.outerHTML = "";            // if hhRel object exists, clears it
  528.  
  529.  
  530.   var h= "<object id='hhRel'"+ sActX_HH + "STYLE='display:none'><param name='Command' value='ALink,MENU'>";
  531.       h= h + "<param name='Item1' value='" + sParamCHM + "'><param name='Item2' value='" + sParamMETA + "'></object>";
  532.     
  533.         document.body.insertAdjacentHTML("beforeEnd", h);     
  534.         document.hhRel.hhclick();
  535. }
  536.  
  537. //*** popNewWindow***************************************************************************************
  538. // creates an object from an <A> tag HREF, the object then opens a new window from the image URL found in the HREF
  539. // called from: <a id="thumbnail" title="Enlarge figure" href="CHM=NTArt.chm FILE=@@image_name.PNG@@">@@alt text here@@</A>
  540. // the thumbnail image is loaded by loadPage();
  541.  
  542.  
  543. function popNewWindow(eventSrc) {
  544. var eH= eventSrc.href;
  545.       event.returnValue = false;
  546.        
  547.  // extracts the thumbnail image URL from the <a> tag HREF
  548.     sParamFILE =  getURL(eH);
  549.     if (sParamFILE=="") return;
  550.        
  551.  // if the hhWindow object exists, clears it
  552.     if (document.hhWindow) document.hhWindow.outerHTML = "";        
  553.         
  554. var  h =  "<object id='hhWindow'"+ sActX_HH +" STYLE='display:none'><param name='Command' value='Related Topics'>";
  555.      h = h + "<param name='Window' value='$global_largeart'><param name='Item1' value='$global_largeart;" + moniker + sParamFILE+ "'> </object>";
  556.     
  557.      document.body.insertAdjacentHTML("beforeEnd", h);
  558.      document.hhWindow.hhclick();
  559. }
  560.  
  561. //*** callShortcut ***************************************************************************************
  562. // creates an object from an <A> tag, the object then calls the executable code
  563. // called from: <A ID="shortcut" HREF="EXEC=@@executable_name.exe@@ CHM=ntshared.chm FILE=@@error_file_name.htm@@">@@Shortcut text@@</A>
  564. // the shortcut image is loaded by loadInitialImg();
  565.  
  566. function callShortcut(eventSrc) {
  567. var e= eventSrc;
  568. var eH= unescape(e.href);
  569. var eH_= eH.toLowerCase();
  570.  
  571.  
  572.     event.returnValue = false;
  573.               
  574.  // extracts the error file URL from the <a> tag HREF
  575.     iEND= eH.length;
  576.     sParamFILE =  getURL(eH); 
  577.  
  578. var iEXEC = eH_.lastIndexOf("exec="); 
  579.         if (iEXEC==-1) return;
  580.         else           sParamEXEC = eH.substring(iEXEC+5,iEND);                // extracts the executable for item1
  581.  
  582.         if (document.hhShortcut) document.hhShortcut.outerHTML = "";            // if the hhShortcut object exists, clears it
  583.     
  584. var  h =  "<object id='hhShortcut'"+ sActX_HH +" STYLE='display:none'> <param name='Command' value='ShortCut'>";
  585.      if(sParamFILE != "") h = h + "<param name='Window' value='" + moniker + sParamFILE+ "'>";
  586.      h = h + "<param name='Item1' value='" + sParamEXEC + "'><param name='Item2' value='msg,1,1'></object>";
  587.  
  588.         document.body.insertAdjacentHTML("beforeEnd", h);
  589.         document.hhShortcut.hhclick();
  590. }
  591.  
  592. //****************************************  EXPAND FUNCTIONS *********************************************************
  593. //********************************************************************************************************************
  594.  
  595. //**  callExpand **************************************************************************************************
  596. //  This expands & collapses (based on current state) "expandable" nodes as they are clicked.
  597. //  Called by: <A ID="expand" href="#">@@Hot text@@</A>
  598. //  Followed by:  <div class="expand">
  599.  
  600. function callExpand(eventSrc) {
  601.  
  602. var e= eventSrc;
  603.     event.returnValue = false;                    // prevents navigating for <A> tag
  604.     
  605. var oExpandable = getExpandable(e); 
  606. var oImg = getImage(e);
  607.  
  608.      if (oExpandable.style.display == "block")
  609.           doCollapse(oExpandable, oImg);
  610.      else doExpand(oExpandable, oImg);
  611. }
  612.  
  613. //** expandGoesHot *********************************************************************************************
  614. // Returns expand image to hot. 
  615.  
  616. function expandGoesHot(eventSrc){
  617. var e= eventSrc;
  618.     
  619. var oExpandable = getExpandable(e);  
  620. var oImg = getImage(e);
  621.  
  622.     if (oExpandable.style.display == "block") oImg.src = expandHot;
  623.     else oImg.src = closedHot;
  624. }
  625.  
  626.  
  627. //** expandGoesCold *********************************************************************************************
  628. // Returns expand image to cold.
  629.  
  630. function expandGoesCold(eventSrc){
  631. var e= eventSrc;
  632.  
  633. var oExpandable = getExpandable(e);   
  634. var oImg = getImage(e);
  635.  
  636.     if (oExpandable.style.display == "block") oImg.src = expand;
  637.     else oImg.src = closed;
  638. }
  639.  
  640.  
  641. //** getExpandable *****************************[used by callExpand, expandGoesHot, expandGoesCold]*******
  642. //  Determine if the element is an expandable node or a child of one.  
  643.  
  644. function getExpandable(eventSrc){
  645. var  e = eventSrc;
  646. var iNextTag, oExpandable;
  647.  
  648.        for (var i=1;i<4; i++){
  649.                iNextTag=    e.sourceIndex+e.children.length+i;
  650.               oExpandable= document.all(iNextTag);
  651.               if (oExpandable.className.toLowerCase()=="expand" || iNextTag == document.all.length)
  652.                    break;
  653.        }
  654.        return oExpandable;
  655. }
  656.  
  657. //**  getImage ***********************************[used by callExpand, expandGoesHot, expandGoesCold]*******
  658. //  Find the first image in the children of the current srcElement.   
  659. // (allows the  image to be placed anywhere inside the <A HREF> tag)
  660.  
  661. function getImage(header) {
  662. var oImg = header;
  663.  
  664.        if(oImg.tagName != "IMG") oImg=oImg.children.tags("IMG")(0);
  665.        return oImg;
  666. }
  667.  
  668.  
  669. //****  expandAll *******************************************************************************************************
  670. //  Will expand or collapse all "expandable" nodes when clicked. [calls closeAll()]
  671. //  called by: <A HREF="#" onclick="expandAll();">expand all</A>
  672.  
  673. var stateExpand = false;    //applies to the page 
  674.  
  675. //**** ****************************************************************************************************************
  676.  
  677. function expandAll() {
  678. var oExpandToggle, oImg;
  679. var expandAllMsg = "expand all";                    //message returned when CloseAll() is invoked
  680. var closeAllMsg = "close all";                        //message returned when ExpandAll() is invoked
  681. var e= window.event.srcElement;
  682.        event.returnValue = false;
  683.  
  684.        for (var i=0; i< document.anchors.length; i++){
  685.                oExpandToggle = document.anchors[i];
  686.          
  687.                 if (oExpandToggle.id.toLowerCase() == "expand"){ 
  688.                      oExpandable = getExpandable(oExpandToggle);  
  689.                      oImg = getImage(oExpandToggle);
  690.              
  691.                      if (stateExpand == true) doCollapse(oExpandable, oImg);
  692.                      else                     doExpand(oExpandable, oImg);
  693.                 }
  694.        }
  695.        if (stateExpand == true) {
  696.             stateExpand = false;
  697.             e.innerText= expandAllMsg;
  698.        }
  699.        else {
  700.             stateExpand = true;
  701.             e.innerText= closeAllMsg;
  702.        }
  703. }
  704.  
  705.  
  706. //****  doExpand *******************************************************************************************************
  707. //  Expands expandable block & changes image
  708.     
  709. var redo = false;    
  710. function doExpand(oToExpand, oToChange) {
  711. var oExpandable= oToExpand;
  712. var oImg= oToChange;
  713.     
  714.     oImg.src = expand;
  715.     oExpandable.style.display = "block";
  716.     
  717.     if (!redo && !isIE5) {
  718.         redo = true;
  719.         focus(oToExpand);
  720.         doExpand(oToExpand, oToChange);
  721.         }
  722.     
  723. }
  724.  
  725.  
  726. //****  doCollapse *****************************************************************************************************
  727. //  Collapses expandable block & changes image
  728.     
  729. function doCollapse(oToCollapse, oToChange) {
  730. if (printing == "TRUE") return;
  731. var oExpandable= oToCollapse;
  732. var oImg= oToChange;
  733.  
  734.     oExpandable.style.display = "none";
  735.     oImg.src = closed;
  736. }
  737.  
  738. //*******************************************************************************************************
  739. //******* WEB  FUNCTIONS **************************************************************************
  740. //*******************************************************************************************************
  741.  
  742. //**** callThumbnailWeb **************************************************************************************
  743.  
  744. function callThumbnailWeb(eventSrc) {
  745. var e= eventSrc;
  746.        event.returnValue = false;
  747.                     
  748. var thumbnailWin= window.open (e.href, "$global_largeart",  "height=450, width=600, left=10, top=10, dependent=yes, resizable=yes, status=no, directories=no, titlebar=no, toolbar=yes, menubar=no, location=no","true");
  749.  
  750. thumbnailWin.document.write ("<html><head><title>Windows 2000</title></head><body><img src='"+e.href+"'></body></html>");
  751.  
  752. return;
  753. }
  754.  
  755. //*********************************************************************************************************
  756. //*********************************************************************************************************
  757.                                 
  758.                                 
  759. var popupOpen= false;                //state of popups
  760. var posX, posY;                        //coordinates of popups
  761. var oPopup;                            //object to be used as popup content
  762.  
  763. //**** callPopupWeb **************************************************************************************
  764. // the web popups have been converted from the object winHelp popup for the web.
  765. // called by: <A ID="wPopupWeb" HREF="#">@@Popup text@@</A>
  766. // followed by: <div class="popup">Popup content</div>
  767.  
  768.  
  769. function callPopupWeb(eventSrc) {
  770. var e= eventSrc;
  771.   
  772.   // find the popup <div> that follows <a id="wPopupWeb"></a>
  773.   findPopup(e);
  774.   positionPopup(e)
  775.  
  776.   oPopup.style.visibility = "visible";
  777.   popupOpen = true;
  778.  
  779.   return;
  780. }
  781.  
  782. //**** findPopup ****************************************************************************************
  783.  
  784. function findPopup(oX){
  785. var e= oX;
  786. var iNextTag;
  787.     
  788.     for (var i=1;i<4; i++){
  789.          iNextTag=    e.sourceIndex + i;
  790.          oPopup= document.all(iNextTag);
  791.          if (oPopup.className.toLowerCase()=="popup" || iNextTag == document.all.length)
  792.              break;
  793.     }
  794.     if (iNextTag != document.all.length) {
  795.         posX = window.event.clientX; 
  796.         posY = window.event.clientY + document.body.scrollTop+10;
  797.     }
  798.     else closePopup();
  799. }
  800.  
  801. //****  positionPopup ************************************************************************************
  802. // Set size and position of popup.
  803. // If it is off the page, move up, but not past the very top of the page.
  804.  
  805. function positionPopup(oX){
  806. var e= oX;    
  807. var popupOffsetWidth = oPopup.offsetWidth;
  808.  
  809. //determine if popup will be offscreen to right
  810. var rightlimit = posX + popupOffsetWidth;
  811.  
  812.   if (rightlimit >= document.body.clientWidth) 
  813.       posX -= (rightlimit - document.body.clientWidth);
  814.   if (posX < 0) posX = 0;
  815.     
  816. //position popup
  817.   oPopup.style.top = posY;
  818.   oPopup.style.left = posX;
  819.  
  820. var pageBottom = document.body.scrollTop + document.body.clientHeight;
  821. var popupHeight = oPopup.offsetHeight;
  822.   
  823.   if (popupHeight + posY >= pageBottom) {
  824.       if (popupHeight <= document.body.clientHeight)
  825.           oPopup.style.top = pageBottom - popupHeight;
  826.       else
  827.            oPopup.style.top = document.body.scrollTop;
  828.   }
  829. }
  830.  
  831. //**** closePopup ****************************************************************************************
  832. // Close Popup
  833. function closePopup() {
  834.  
  835.   oPopup.style.visibility = "hidden";
  836.   popupOpen = false;
  837.   return;
  838. }
  839.  
  840. //*********************************************  GENERAL FUNCTIONS ************************************************
  841. //**************************************************************************************************************************
  842.  
  843. //***ajustImg *************************************************************************************************************
  844. // expands an image to the with of the window or shrinks it to 90px
  845.  
  846. function ajustImg(eventSrc) {
  847. var e= eventSrc;
  848. var fullWidth= document.body.offsetWidth;
  849.  
  850.     fullWidth = fullWidth - 50;
  851.     if (e.style.pixelWidth==90)
  852.          e.style.pixelWidth=fullWidth;
  853.     else e.style.pixelWidth=90;
  854. }
  855.  
  856.  
  857. //**  getURL **************************************[used in callShortcut, popNewWindow& loadPage]********
  858. // extracts the file location (CHM::/HTM) URL 
  859.  
  860. function getURL(sHREF) {
  861. var spaces= /\s/g
  862. var eH = unescape(sHREF);
  863.     eH = eH.replace(spaces,""); 
  864.  
  865. var eH_= eH.toLowerCase();
  866. var sParamFILE= "";
  867. var sParamCHM= "";
  868.  
  869. var iFILE= eH_.lastIndexOf("file=");
  870.     if (iFILE!=-1){
  871.         iEND= iFILE +1;
  872.         sParamFILE = eH.substring(iFILE+5,eH.length);
  873.     }  
  874.  
  875. var iCHM  = eH_.lastIndexOf("chm=");
  876.     if (iCHM!=-1){
  877.         iEND  = iCHM +1;                             // iEND used by callShortcut
  878.  
  879.         sParamCHM = eH.substring(iCHM+4, iFILE);
  880.         sParamFILE= sParamCHM+"::/"+sParamFILE;
  881.     }    
  882.     return sParamFILE;
  883. }
  884.  
  885. //****************************************************************************************************************************
  886. //********************************************  IE5 PERSISTENCE  *************************************************************
  887. //****************************************************************************************************************************
  888.  
  889. var oTD,iTD;         // persistence
  890.  
  891. //****** Persistence for userData ********************************************************************************************* 
  892.  
  893. function getChecklistState(){ 
  894.  
  895.  var pageID= addID();
  896.  
  897.     if (checklist.all== "[object]") {
  898.     oTD=checklist.all.tags("INPUT");
  899.     iTD= oTD.length;
  900.         }
  901.     else
  902.         {
  903.         printing = "TRUE";
  904.         isPersistent = false;
  905.         return;
  906.         }
  907.  
  908.     if (iTD == 0){
  909.         printing = "TRUE";
  910.         isPersistent = false;
  911.         return;
  912.         }
  913.     
  914.     checklist.load("oXMLStore");
  915.     
  916.     if (checklist.getAttribute("sPersist"+pageID+"0"))    
  917.     for (i=0; i<iTD; i++){
  918.  
  919.          if (oTD[i].type =="checkbox" || oTD[i].type =="radio"){
  920.          checkboxValue= checklist.getAttribute("sPersist"+pageID+i);
  921.         
  922.          if (checkboxValue=="yes") oTD[i].checked=true;
  923.          else oTD[i].checked=false;
  924.          }// if
  925.          if (oTD[i].type =="text")              
  926.               oTD[i].value= checklist.getAttribute("sPersist"+pageID+i);
  927.      }// for
  928. } // end persistence
  929.  
  930. //**  saveChecklistState *************************************************************************************************************
  931. function saveChecklistState(){
  932. var pageID= addID(); 
  933.  
  934.         if (!isPersistent) return; 
  935.  
  936.         for (i=0; i<iTD; i++){
  937.  
  938.                 if (oTD[i].type =="checkbox" || oTD[i].type =="radio"){
  939.                  if (oTD[i].checked) checkboxValue="yes";
  940.                  else checkboxValue="no";
  941.                  
  942.                  checklist.setAttribute("sPersist"+pageID+i, checkboxValue);
  943.              }// if
  944.             
  945.               if (oTD[i].type =="text") 
  946.                  checklist.setAttribute("sPersist"+pageID+i, oTD[i].value);
  947.          }    // for    
  948.      checklist.save("oXMLStore");
  949. }//end function
  950.  
  951. //**  resizeDiv *******************************[used with callPopupWeb, setPreviousNext}****************************************************
  952. //  resize the page when the <div class=nav></div> && <div class=text></div> are found
  953. function resizeDiv(){
  954. if (printing == "TRUE") return;
  955. var oNav = document.all.item("nav");
  956. var oText= document.all.item("text");
  957.  
  958.     if (popupOpen) closePopup();
  959.     if (oText == null) return;
  960.     if (oNav != null){
  961.         document.all.nav.style.width= document.body.offsetWidth;
  962.         document.all.text.style.width= document.body.offsetWidth-4;
  963.         document.all.text.style.top= document.all.nav.offsetHeight;
  964.         if (document.body.offsetHeight > document.all.nav.offsetHeight)
  965.             document.all.text.style.height= document.body.offsetHeight - document.all.nav.offsetHeight;
  966.          else document.all.text.style.height=0; 
  967.   }
  968. }
  969.  
  970. //**  addID *************************************************************************************************************
  971. function addID(){
  972.  
  973. var locID = document.location.href; 
  974. var iHTM = locID.lastIndexOf(".htm");
  975. var iName=locID.lastIndexOf("/");
  976.       locID = locID.substring(iName+1,iHTM);
  977.     
  978.     return locID;
  979. }    
  980. //** set_to_print ***************
  981. function set_to_print(){
  982.     var i;
  983.     printing = "TRUE";
  984.         
  985.     for (i=0; i < document.all.length; i++){
  986.         if (document.all[i].id == "expand") {
  987.             callExpand(document.all[i]);
  988.             single = "TRUE";
  989.             }
  990.         if (document.all[i].tagName == "BODY") {
  991.             document.all[i].scroll = "auto";
  992.             }
  993.         if (document.all[i].tagName == "A") {
  994.             document.all[i].outerHTML = "<A HREF=''>" + document.all[i].innerHTML + "</a>";
  995.             }
  996.         }
  997.  
  998. }
  999. //** used to reset a page if needed ********************
  1000. function reset_form(){
  1001.  
  1002.     if (single == "TRUE") document.location.reload();
  1003.     
  1004. }
  1005.     
  1006.     
  1007. //** on error routine *********************************
  1008. function errorHandler() {
  1009.   // alert("Error Handled");
  1010.   return true;
  1011. }
  1012. //**********************--Change: pop-up code starts here. RTL, 4-99 RTL**********************
  1013. //---from Joseph beckar
  1014. function popupon(text, eventObj) 
  1015.   ieLayer = 'document.all[\'popup\']';
  1016.   nnLayer = 'document.layers[\'popup\']';
  1017.  
  1018.   //-- Start Editable Area --
  1019.   borderColor = '#000000';
  1020.   bgColor = '#ffffcc';
  1021.   border = 1;
  1022.   padding = 3;
  1023.   xOffset = 3;
  1024.   yOffset = 3;
  1025.   Font = 'face="Verdana, Arial, Helvetica, sans-serif" size=2';
  1026.   //-- End Editable Area --
  1027.  
  1028.   if (!(document.all || document.layers)) return;
  1029.   if (null != document.all) document.popup = eval(ieLayer); else document.popup = eval(nnLayer);
  1030.  
  1031.   var table = "";
  1032.   var bigTable = ""; // Workaround for Netscape
  1033.  
  1034.   if (null != document.all) 
  1035.     { // If IE4+
  1036.     table += "<table bgcolor= "+ bgColor +" border= "+ border +" cellpadding= "+ padding +" cellspacing=0>";
  1037.     table += "<tr><td>";
  1038.     table += "<table cellspacing=0 cellpadding="+ padding +">";
  1039.     table += "<tr><td bgcolor= "+ bgColor +"><font "+ Font +">" + text + "</font></td></tr>";
  1040.     table += "</table></td></tr></table>"
  1041.     } 
  1042.   else 
  1043.     { // If NN4+
  1044.     table += "<table cellpadding="+ padding +" border="+ border +" cellspacing=0 bordercolor="+ borderColor +">";
  1045.     bigTable += "<table width="+(document.width - xOffset - eventObj.layerX - 30)+"cellpadding="+ padding +" border="+ border +" cellspacing=0 bordercolor="+ borderColor +">";
  1046.     table += "<tr><td bgcolor="+ bgColor +"><font "+ Font +">" + text + "</font></td></tr></table>";
  1047.     bigTable += "<tr><td bgcolor="+ bgColor +"><font "+ Font +">" + text + "</font></td></tr></table>";
  1048.     }
  1049.  
  1050.   if (null != document.all) 
  1051.     { // If IE4+
  1052.     document.popup.innerHTML = table;
  1053.     document.popup.style.left = eventObj.x + xOffset;
  1054.     document.popup.style.top  = eventObj.y + yOffset;
  1055.     document.popup.style.visibility = "visible";
  1056.     } 
  1057.   else 
  1058.     { // If NN4+
  1059.     document.popup.document.open();
  1060.     document.popup.document.write(table);
  1061.     document.popup.document.close();
  1062.     if ((document.popup.document.width + xOffset + eventObj.layerX) > document.width)
  1063.     { // If the layer runs off the right hand side
  1064.       document.popup.document.open();
  1065.       document.popup.document.write(bigTable);
  1066.       document.popup.document.close();
  1067.     }
  1068.     document.popup.left = eventObj.layerX + xOffset;
  1069.     document.popup.top  = eventObj.layerY + yOffset;
  1070.     document.popup.visibility = "visible";
  1071.   }
  1072. }
  1073.  
  1074.  
  1075. function popupoff() 
  1076.   if (!(document.all || document.layers)) return;
  1077.   if (null == document.popup) {
  1078.   } else if (null != document.all)
  1079.     document.popup.style.visibility = "hidden";
  1080.   else
  1081.     document.popup.visibility = "hidden";
  1082.     document.popup = null;
  1083. }
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.